package opf5.entities.propuestas;

import java.util.LinkedList;
import java.util.List;

import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Propuesta;
import opf5.entities.repositorios.RepositorioJugadores;
import opf5.entities.repositorios.RepositorioPropuestas;
import opf5.persistencia.proxies.PropuestaDBProxy;

public class RepositorioPropuestasEnMemoria implements RepositorioPropuestas {
	private List<Propuesta> propuestasEnEspera = new LinkedList<Propuesta>();
	private List<Propuesta> propuestasRechazadas = new LinkedList<Propuesta>();
	private List<Propuesta> propuestasAprobadas = new LinkedList<Propuesta>();
	
	public List<Propuesta> getPropuestasEnEspera() {
		return propuestasEnEspera;
	}

	public void agregarPropuesta(Propuesta propuesta) {
		propuestasEnEspera.add(propuesta);		
	}

	public List<Propuesta> getPropuestasRechazadas() {
		return propuestasRechazadas;
	}

	public void rechazarPropuesta(Propuesta propuesta, String motivo) {
		propuesta.rechazar(motivo);
		propuestasEnEspera.remove(propuesta);
		propuestasRechazadas.add(propuesta);
	}

	public List<Propuesta> getPropuestasAprobadas() {
		return propuestasAprobadas;
	}

	public void aprobarPropuesta(Propuesta propuesta, Jugador nuevoJugador, RepositorioJugadores repositorioJugadores) {
		propuesta.aprobar(nuevoJugador, repositorioJugadores);
		propuestasEnEspera.remove(propuesta);
		propuestasAprobadas.add(propuesta);
	}

	public void agregarPropuestaAprobada(Propuesta p) {
		this.propuestasAprobadas.add(p);
	}

	public void agregarPropuestaRechazada(Propuesta p) {
		this.propuestasRechazadas.add(p);
	}

}
